package com.ipartek.formacion.gestformwww.modelo.clases;

import com.ipartek.formacion.gestformwww.modelo.beans.Docente;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import com.ipartek.formacion.gestformwww.modelo.interfaces.IDocenteDAO;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Sara y Víctor
 */
public class SQLServerDocenteDAO implements IDocenteDAO {

    private static ResourceBundle rb;

    public SQLServerDocenteDAO() {
        
        rb = ResourceBundle.getBundle("com.ipartek.formacion.gestformwww.controlador.excepciones");
    }

    private Docente instanciar(ResultSet rs) throws SQLException{
        Docente docente = new Docente();
        docente.setDocId(rs.getInt("DocId"));
        docente.setDocTlf1(rs.getString("DocTlf1"));
        docente.setDocTlf2(rs.getString("DocTlf2"));
        docente.setDocColaborador(rs.getBoolean("DocColaborador"));
        docente.setDocNom(rs.getString("DocNom"));
        docente.setDocApe1(rs.getString("DocApe1"));
        docente.setDocApe2(rs.getString("DocApe2"));
        docente.setDocMail(rs.getString("DocMail"));
        docente.setDocObserv(rs.getString("DocObserv"));
        docente.setDocActivo(rs.getBoolean("DocActivo"));
        return docente;
    }

    /**
     * Devuelve una lista con todos los docentes
     * @author Sara y Víctor
     * @return
     */
    public ArrayList<Docente> listarDocentes() throws GestorFormacionExcepcion {
        ArrayList<Docente> docentes = new ArrayList<Docente>();
        Connection con = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;
        try {
            con = SQLServerDAOFactory.conecta();
        }catch(SQLException ex){
            Logger.getLogger(SQLServerDocenteDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new GestorFormacionExcepcion(rb.getString("no-conexion"));
        }
        try{
            stmt = con.prepareStatement("SELECT DocId, DocTlf1, DocTlf2, DocColaborador, DocNom, DocApe1, DocApe2, DocMail, DocObserv, DocActivo FROM DOCENTE");
            rs = stmt.executeQuery();
            while(rs.next()){
                docentes.add(instanciar(rs));
            }
        }catch(SQLException ex){
            Logger.getLogger(SQLServerDocenteDAO.class.getName()).log(Level.SEVERE, null, ex);
            throw new GestorFormacionExcepcion(rb.getString("no-sql"));
        }
        finally{
            SQLServerDAOFactory.desconecta(con);
        }
        return docentes;
    }
}
